import { Injectable } from '@angular/core'
import { Toast } from 'ng-zorro-antd-mobile'

@Injectable({
  providedIn: 'root'
})
export class CommonUtil {
  constructor() {}
  // 加密手机号码中间四位
  encryPhone(phone: string) {
    if (phone) {
      return phone.substring(0, 3) + '****' + phone.substring(7, 11)
    } else {
      return ''
    }
  }
  // 对象转Lambda表达式
  obj2Lambda(obj) {
    let str = ''
    // 如果是对象
    if (obj instanceof Object) {
      // 则遍历对象
      for (let key in obj) {
        // 如果value为空，则key不参与组合
        if (obj[key][1]) {
          str = str + (key + obj[key][0] + obj[key][1] + '&&')
        }
      }
    }
    return str.substring(0, str.length - 2)
  }
  // 时间戳转UTC格式，需传入new Date()格式时间
  time2UTC(e) {
    let year = e.getFullYear()
    let month = e.getMonth() + 1
    let day = e.getDate()
    let hour = e.getHours()
    let minute = e.getMinutes()
    let second = e.getSeconds()
    return `DateTime(${year}, ${month}, ${day}, ${hour}, ${minute}, ${second})`
  }
  // 根据Photo获取缩略图
  getThumbnail(photo) {
    let result = '' // 最终结果
    let tempArray = null // 临时存储格式化的Photo
    let tempResult = '' // 临时存储返回的图片
    let flag = false // 是否有Category为null的obj
    // 如果photo字段不存在，则返回默认图片(有的话返回路径，没有的话返回空)
    if (!photo) {
      result = ''
    } else {
      tempArray = JSON.parse(photo)
      if (tempArray.length === 0) {
        result = ''
      } else {
        for (let i = 0; i < tempArray.length; i++) {
          // 如果有Caterory为null的，则取该对象的Items第一张为缩略图
          // 否则取数组的Items第一张
          if (!tempArray[i].Category) {
            flag = true
            result = tempArray[i].Items[0]
          } else {
            tempResult = tempArray[0].Items[0]
          }
        }
        if (!flag) {
          result = tempResult
        }
      }
    }
    return result
  }
  // 根据名称获取图片
  getPhotoByName(photo, name) {
    let result = null // 最终结果
    let tempArray = null // 临时存储格式化的Photo
    let tempResult = null // 临时存储返回的图片
    let flag = false // 是否有Category为null的obj

    // 如果photo字段不存在，则返回默认图片(有的话返回路径，没有的话返回空)
    if (!photo) {
      result = []
    } else {
      tempArray = JSON.parse(photo)
      if (tempArray.length === 0) {
        result = []
      } else {
        for (let i = 0; i < tempArray.length; i++) {
          // 如果有Caterory为null的，则取该对象的Items第一张为缩略图
          // 否则取数组的Items第一张
          if (tempArray[i].Category === name) {
            flag = true
            result = tempArray[i].Items
          } else {
            tempResult = tempArray[0].Items
          }
        }
        if (!flag) {
          result = tempResult
        }
      }
    }
    return result
  }
  // 计算时间差
  getTimeDiff(start, end) {
    let timpstamp = end - start
    //计算出相差天数
    let day = Math.floor(timpstamp / (24 * 3600 * 1000))
    //计算出小时数
    let leave1 = timpstamp % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
    let hour = Math.floor(leave1 / (3600 * 1000))
    //计算相差分钟数
    let leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
    let minute = Math.floor(leave2 / (60 * 1000))
    //计算相差秒数
    let leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
    let seconds = Math.round(leave3 / 1000)

    let str1 = ''
    let str2 = ''
    let str3 = ''
    if (day > 0) {
      str1 = `${day}天`
    }
    if (hour >= 0) {
      str2 = `${hour}小时`
    }
    if (minute > 0) {
      str3 = `${minute}分`
    }
    return str1 + str2 + str3
  }
  // tag整理和截取
  getTag(t) {
    let temp = []
    if (!t) {
      return temp
    } else {
      temp = JSON.parse(t)
      if (temp.length > 3) {
        temp.length = 3
      }
      return temp
    }
  }
  // 跳转链接提取
  getNivigateLink(url) {
    if (!url) {
      return false
    } else if (url.indexOf('http') > -1) {
      // 跳转webview，暂不做跳转
      return false
    } else if (url.indexOf('mp://wx84639629ee7abd74') > -1) {
      // 客户端内跳转
      if (url.indexOf('HouseDetails') > -1) {
        let id = url.split(':')[2]
        return '/workspace/estate/detail?project=' + id
      } else if (url.indexOf('ActivityDetails') > -1) {
        let id = url.split(':')[2]
        return '/workspace/home/activityDetail?promotion=' + id
      } else if (url.indexOf('layoutDetails') > -1) {
        let id = url.split(':')[2]
        return '/workspace/estate/typeDetail?layout=' + id
      }
    }
  }
  // 根据key返回value
  getValueByKey(key, list) {
    if (!list || list.length === 0) {
      return ''
    }
    for (let i = 0; i < list.length; i++) {
      if (list[i].key === key) {
        return list[i].value
      }
    }
  }
  // ng-zorro-mobile feedback封装
  info(msg) {
    Toast.info(msg, 2000, null, false)
  }
  success(msg) {
    Toast.success(msg, 2000, null, false)
  }
  fail(msg) {
    Toast.fail(msg, 2000, null, false)
  }
  loading(msg) {
    Toast.loading(msg, 0)
  }
  hide() {
    Toast.hide()
  }
}
